package com.wkq.util
import android.util.Log

/**
 *
 *@Author: wkq
 *
 *@Time: 2025/8/28 11:32
 *
 *@Desc:
 */




object MethodLogger {

    private const val TAG = "MethodLogger"

    /**
     * 自动打印方法调用日志（无参数，无返回值，无回调）
     * 使用方式：在方法内部直接调用 MethodLogger.logMethod()
     */
    fun logMethod() {
        // 获取调用方法栈信息
        val stackTrace = Thread.currentThread().stackTrace
        val caller = stackTrace
            .firstOrNull { it.className != MethodLogger::class.java.name && it.methodName != "getStackTrace" }

        val methodName = caller?.methodName ?: "UnknownMethod"
        val className = caller?.className?.substringAfterLast('.') ?: "UnknownClass"
        val threadName = Thread.currentThread().name

        // 测量耗时（可以用系统时间差模拟，逻辑执行耗时可以自己测量）
        val startTime = System.currentTimeMillis()

        // 这里只记录日志，不执行其他逻辑
        val endTime = System.currentTimeMillis()
        val duration = endTime - startTime

        Log.d(TAG, ">>> Enter $className.$methodName | Thread: $threadName")
        Log.d(TAG, "<<< Exit $className.$methodName | duration: ${duration} ms")
    }
}
